package com.dominator.service;

import com.dominFramework.core.typewrap.Dto;
import com.dominator.mybatis.dao.T_machinePO;
import com.dominator.utils.api.ApiMessage;
import com.dominator.utils.exception.ApiException;

public interface ApiMachineService {



    /**
     * 机器初始化
     * @param dto
     * @return
     * @throws ApiException
     */
    ApiMessage init(Dto dto)throws ApiException;



    /**
     * 机器登录
     * @param dto
     * @return
     * @throws ApiException
     */
    ApiMessage machineLogin(Dto dto)throws ApiException;



    /**
     * 机器登出
     * @param dto
     * @return
     * @throws ApiException
     */
    ApiMessage machineLogout(Dto dto)throws ApiException;


    /**
     * 用户登录
     * @param dto
     * @return
     * @throws ApiException
     */
    ApiMessage userLogin(Dto dto) throws ApiException;


    /**
     * 用户登出
     * @param dto
     * @return
     * @throws ApiException
     */
    ApiMessage userLogout(Dto dto) throws ApiException;

    /**
     * 获取用户信息
     * @param dto
     * @return
     * @throws ApiException
     */
    ApiMessage getUserInfo(Dto dto) throws ApiException;



    /**
     * 删除所有会话
     * @param sessionId
     * @return
     * @throws ApiException
     */
    void delAllSession(String sessionId)throws ApiException;

    /**
     * 发送给机器
     * @param dto
     * @return
     * @throws ApiException
     */
    ApiMessage sendToMachineId(Dto dto)throws ApiException;


    /**
     * 创建订单
     * @param dto
     * @return
     * @throws ApiException
     */
    ApiMessage createOrder(Dto dto) throws ApiException;








    /**
     * 订单加奖
     * @param dto
     * @return
     * @throws ApiException
     */
    ApiMessage orderPlusResult(Dto dto) throws ApiException;



    /**
     * 机器是否登录
     * @param machineId
     * @return
     * @throws ApiException
     */
    boolean isMachineLogin(String machineId) throws ApiException;

    /**
     * 用户是否登录机器
     * @param userId
     * @param machineId
     * @return
     * @throws ApiException
     */
    boolean isUserLogin(String userId,String machineId) throws ApiException;


    /**
     * 查询机器信息
     * @param machineId
     * @return
     * @throws ApiException
     */
    T_machinePO getMachineById(String machineId) throws ApiException;


    /**
     * 保存记录详情
      * @param userId
     * @param machineId
     * @param status
     */
    void saveLoginDetail(String userId,String machineId,int status) throws ApiException;






    /**
     * 查询机器和门店名称
     * @param dto
     * @return
     * @throws ApiException
     */
    ApiMessage getMachineAndShopById(Dto dto) throws ApiException;


    /**
     * 推送给极光登陆用户
     * @param dto
     * @throws ApiException
     */
    void jpushToUser(Dto dto) throws ApiException;


    /**
     * 获取机器登录状态
     * @param dto
     * @return
     * @throws ApiException
     */
    ApiMessage  getMachineLoginStatus(Dto dto) throws  ApiException;





























}
